Welcome, and thank you for your interest in our DSP course! This is the new, refurbished version of the original DSP class that we have been offering on Coursera since 2013. For this new edition, we split the material into four independent courses:

The new structure will allow you to progress incrementally if you are new to the world of digital signal processing or, if you would like a simple refresher course, you will be able to choose the one that best fits your needs. All four courses follow the same principles: the material is based on a freely-available textbook and each module includes automatically graded exercises that will be used for your final grade. There are no programming assignments but every module is complemented by Jupyter notebooks in Python that implement most of the algorithms discussed in the lectures.

In the first course, DSP1, the focus was on Fourier analysis; in DSP2 we concentrated on filters (static and adaptive). Both courses dealt exclusively with discrete-time signals, which is OK since all that we can do in a digital processor today is discrete-time by definition. There is however a much larger world out there, the world of physics, electronics, mechanics, that does not "speak discrete time". That is to say, the mathematical models used by those disciplines work with objects that do not fit in our discrete-time architecture, objects such as infinitely granular time and signals expressed as functions of a real-valued variable: welcome to the analog world, where continuous time rules. In this course we will learn how to build a bridge between our discrete-time machinery and the continuous-time universe and show that, in fact, we can represent analog information in digital form with near-perfect accuracy.

This class contains four modules. In the first two we will describe interpolation and sampling, that is, how to go from discrete time to continuos time, and back. Module 3 will introduce the notion of multirate processing, where we play with the sampling rate to improve the performance of our digital processing. Finally, a module on quantization will address the consequences of representing the amplitude of a signal with finite-precision digital quantities.

If you are here, we assume you have already taken DSP1 and DSP2 or, at least, you are familiar with our notation and our approach to signal processing based on linear algebra. You may want to quickly peruse module 1 and 2 of DSP1 if you are unsure.

This class corresponds to Chapters 9 to 11 in the reference textbook but we will skip some of the technicalities. Also remember that everything we do in this class you can implement in your numerical package of choice and apply it to your favorite signals!